using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Reflection;

namespace Charisma.Conventions
{
    [ContractClass(typeof (KeyMemberConventionContract))]
    public interface IKeyMemberConvention : IConvention
    {
        MemberInfo Find(Type type, IEnumerable<MemberInfo> candidates);
    }

    [ContractClassFor(typeof (IKeyMemberConvention))]
    internal abstract class KeyMemberConventionContract : IKeyMemberConvention
    {
        #region IKeyMemberConvention Members

        public MemberInfo Find(Type type, IEnumerable<MemberInfo> candidates)
        {
            Contract.Requires(type != null);
            Contract.Requires(candidates != null);
            return null;
        }

        #endregion
    }
}